package com.waitingresult.common;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.waitingresult.common.base.exception.CommonException;

import java.util.Collection;
import java.util.Objects;

/**
 * All right reserved,Designed By WangShuai
 * <p>
 * 断言工具
 * </p>
 *
 * @author : WangShuai
 * @version : V1.0
 * @ClassName : Assert
 * @Description : 常用断言工具类
 * @date : 2021/9/9 10:25
 */
public class Assert {
    public Assert() {
    }

    public static void isNull(Object obj, String errorMsg) {
        if (ObjectUtil.isNull(obj)) {
            throw new CommonException(errorMsg);
        }
    }

    public static void isNotNull(Object obj, String errorMsg) {
        if (ObjectUtil.isNotNull(obj)) {
            throw new CommonException(errorMsg);
        }
    }

    /**
     * 判断字符串是否为空
     * cn.hutool.core.text.CharSequenceUtil#isEmpty(java.lang.CharSequence)
     *
     * @param data
     * @param errorMsg
     */
    public static void isEmpty(String data, String errorMsg) {
        if (StrUtil.isEmpty(data)) {
            throw new CommonException(errorMsg);
        }
    }

    /**
     * 对象不为空 报错
     * cn.hutool.core.text.CharSequenceUtil#isEmpty(java.lang.CharSequence)
     *
     * @param data
     * @param errorMsg
     */
    public static void isNotEmpty(String data, String errorMsg) {
        if (!StrUtil.isEmpty(data)) {
            throw new CommonException(errorMsg);
        }
    }

    public static void isEmpty(Collection<?> data, String errorMsg) {
        if (data == null || data.isEmpty()) {
            throw new CommonException(errorMsg);
        }
    }

    public static void isNotEmpty(Collection<?> data, String errorMsg) {
        if (data != null && !data.isEmpty()) {
            throw new CommonException(errorMsg);
        }
    }

    public static void equals(Object a, Object b, String errorMsg) {
        if (Objects.equals(a, b)) {
            throw new CommonException(errorMsg);
        }
    }

    public static void notEquals(Object a, Object b, String errorMsg) {
        if (!Objects.equals(a, b)) {
            throw new CommonException(errorMsg);
        }
    }

    public static <T> void exists(T a, Collection<T> list, String errorMsg) {
        if (list.contains(a)) {
            throw new CommonException(errorMsg);
        }
    }

    public static <T> void notExists(T a, Collection<T> list, String errorMsg) {
        if (!list.contains(a)) {
            throw new CommonException(errorMsg);
        }
    }

    public static void isNullOrLessThanZero(Integer data, String errorMsg) {
        if (data == null || data < 0) {
            throw new CommonException(errorMsg);
        }
    }

    public static void isNullOrLessThanZero(Long data, String errorMsg) {
        if (data == null || data < 0L) {
            throw new CommonException(errorMsg);
        }
    }

    public static void isNullOrLessThanZero(Float data, String errorMsg) {
        if (data == null || data < 0.0F) {
            throw new CommonException(errorMsg);
        }
    }

    public static void isNullOrLessThanZero(Double data, String errorMsg) {
        if (data == null || data < 0.0D) {
            throw new CommonException(errorMsg);
        }
    }

    public static void isNullOrLessThanOrEqualToZero(Integer data, String errorMsg) {
        if (data == null || data <= 0) {
            throw new CommonException(errorMsg);
        }
    }

    public static void isNullOrLessThanOrEqualToZero(Long data, String errorMsg) {
        if (data == null || data <= 0L) {
            throw new CommonException(errorMsg);
        }
    }

    public static void isNullOrLessThanOrEqualToZero(Float data, String errorMsg) {
        if (data == null || data <= 0.0F) {
            throw new CommonException(errorMsg);
        }
    }

    public static void isNullOrLessThanOrEqualToZero(Double data, String errorMsg) {
        if (data == null || data <= 0.0D) {
            throw new CommonException(errorMsg);
        }
    }

    public static void isTrue(boolean expression, String errorMsg) {
        if (expression) {
            throw new CommonException(errorMsg);
        }
    }

    public static void isFalse(boolean expression, String errorMsg) {
        if (!expression) {
            throw new CommonException(errorMsg);
        }
    }
}
